home *** CD-ROM | disk | FTP | other *** search
/ Windows 6-Pak - Disc 4 / Windows 6-Pak (InfoMagic) (Disc 4) (1999).ISO / Text-Chat-Scripts / pp-320m.exe / pp300 / a-main3.mrc < prev    next >
Encoding:
Text File  |  1998-08-15  |  27.3 KB  |  547 lines

  1. ; -----------------------------------------------------
  2. ; Peace and Protection (by misspai)
  3. ; -----------------------------------------------------
  4. ; Main (normal) aliases
  5. ; (Third section)
  6. ; -----------------------------------------------------
  7. ; Express File Finder
  8. ; -----------------------------------------------------
  9. ; /ff [-e/f/a/n] [d:][\dir][file/matchtext][.ext]
  10. ; if drive is given, only that drive is searched
  11. ; if dir is given, only that dir tree is searched
  12. ; file or matchtext is used to match filename (none = *.*)
  13. ; if a 1/2/3/4 letter extension is given, that exact extension must be matched
  14. ; -e means to match exact filename -f means that exact file if exists
  15. ; otherwise name is surrounded by *, spaces become *, and _ and - become ?
  16. ; -a means to add to current filelist if any, else filelist is reset; -n = remain minimized
  17. ; s = recent sends, g = recent gets, d = default d/l dir, m = mp2/3s, w = waves, i = midis, l = logs, c = mircdir, p = p&pdir, r = recent files, x = incompletes, z = custom sound
  18. find {
  19.   if (3.1 isin $os) _error Sorry, Express File Finder does not work properly on Windows 3.11
  20.   unset %_findrcpop %.ff.ok2
  21.   if ($1 == $null) _quickhelp /find
  22.   if (($left($1,1) == -) || (($len($1) == 1) && (($2 == $null) || (($1 == z) && ($3 == $null))))) { set %.ff.opt - $+ $1 | set %.ff.to $2- }
  23.   else { set %.ff.opt - | set %.ff.to $1- }
  24.   if (z isin %.ff.opt) { set %.ff.stype $gettok(%.ff.to,1,32) | set %.ff.to $gettok(%.ff.tok,2-,32) }
  25.   set %.ff.found 0 | unset %.ff.did
  26.   if (a !isin %.ff.opt) window -c @Express
  27.   elseif ($_isopen(@Express)) {
  28.     dline @Express 4
  29.     dline @Express 3
  30.     dline @Express 2
  31.     dline @Express 1
  32.     set %.ff.found $line(@Express,0)
  33.   }
  34.   window -nl $+ $_spec1d $_tabscale(7) @Express $_winpos(50,30,50,50) @Express %font.basic
  35.   if (f isin %.ff.opt) {
  36.     if ($exists($remove(%.ff.to,"))) aline -a @Express $remove(%.ff.to,")
  37.     goto nextset
  38.   }
  39.   unset %.ff.group
  40.   if (%.ff.to == $null) goto nextset
  41.   :setloop
  42.   if (: isin %.ff.to) {
  43.     set %.ff.dr $asc(%.ff.to)
  44.     set %.ff.last %.ff.dr
  45.     set %.ff.to $gettok(%.ff.to,2-,58)
  46.     if (%.ff.to == $null) set %.ff.to *.*
  47.   }
  48.   else {
  49.     set %.ff.to %.ff.to
  50.     set %.ff.dr 99
  51.     set %.ff.last 122
  52.     _progress.1 Finding files... Please wait...
  53.     _progress.2 0 0% complete... (drive C:)
  54.   }
  55.   unset %.ff.dir
  56.   if (\ isin %.ff.to) {
  57.     if ($_numtok(92,%.ff.to) > 1) set %.ff.dir \ $+ $_ltok($_j($_numtok(92,%.ff.to)),92,%.ff.to)
  58.     if ($right(%.ff.to,1) == \) set %.+ff.keep $true
  59.     else unset %.+ff.keep
  60.     set %.ff.to $_rtok(1,92,%.ff.to)
  61.     if ((. !isin %.ff.to) || (%.+ff.keep)) {
  62.       set %.ff.dir %.ff.dir $+ \ $+ %.ff.to
  63.       set %.ff.to *.*
  64.       set %.ff.dir $replace(%.ff.dir,\\,\)
  65.     }
  66.   }
  67.   if (e !isin %.ff.opt) {
  68.     set %.ff.to * $+ $_ffprep($replace(%.ff.to,$chr(32),*)) $+ *
  69.     if (. isin $right(%.ff.to,6)) set %.ff.to $_lchop(1,%.ff.to)
  70.     set %.ff.to $replace(%.ff.to,**,*)
  71.   }
  72.   :loop
  73.   set %.ff.wh $chr(%.ff.dr) $+ : $+ %.ff.dir
  74.   inc %.ff.found $findfile(%.ff.wh,%.ff.to,@Express)
  75.   if ($_vi(.ff.dr) <= %.ff.last) {
  76.     set %.ff.perc $int($calc((%.ff.dr - 99) * 100 / 24))
  77.     _progress.2 %.ff.perc %.ff.perc $+ % complete... (drive $upper($chr(%.ff.dr)) $+ :)
  78.     goto loop
  79.   }
  80.   if (%.ff.last < 122) set %.ff.did %.ff.did %.ff.wh $+ \ $+ %.ff.to
  81.   else set %.ff.did %.ff.did *: $+ %.ff.dir $+ \ $+ %.ff.to
  82.   window -c @Progress
  83.   if ((%.ff.found < 1) && (%.ff.ok2 == $null)) {
  84.     window -c @Express
  85.     if (: isin $1) _error No files found matching  $+ %.ff.to $+  on drive $upper($chr(%.ff.last)) $+ :
  86.     else _error No files found matching  $+ %.ff.to $+ 
  87.   }
  88.   :nextset
  89.   set %.ff.ok2 ^_^
  90.   if (c isin %.ff.opt) { set %.ff.to $mircdir | set %.ff.opt $remove(%.ff.opt,c) | goto setloop }
  91.   if (p isin %.ff.opt) { set %.ff.to $mircdir $+ $_ppsub | set %.ff.opt $remove(%.ff.opt,p) | goto setloop }
  92.   if (d isin %.ff.opt) { set %.ff.to $getdir | set %.ff.opt $remove(%.ff.opt,d) | goto setloop }
  93.   if (L isin %.ff.opt) { set %.ff.to $logdir | set %.ff.opt $remove(%.ff.opt,L) | goto setloop }
  94.   if (m isin %.ff.opt) {
  95.     if (%.ff.group == $null) set %.ff.group $_mpdir
  96.     set %.ff.to $gettok(%.ff.group,1,59)
  97.     if ($right(%.ff.to,1) != \) set %.ff.to %.ff.to $+ \
  98.     set %.ff.to %.ff.to $+ *.mp?
  99.     set %.ff.group $gettok(%.ff.group,2-,59)
  100.     if (%.ff.group == $null) set %.ff.opt $remove(%.ff.opt,m)
  101.     goto setloop
  102.   }
  103.   if (w isin %.ff.opt) {
  104.     if (%.ff.group == $null) set %.ff.group $_wavedir
  105.     set %.ff.to $gettok(%.ff.group,1,59)
  106.     if ($right(%.ff.to,1) != \) set %.ff.to %.ff.to $+ \
  107.     set %.ff.to %.ff.to $+ *.wav
  108.     set %.ff.group $gettok(%.ff.group,2-,59)
  109.     if (%.ff.group == $null) set %.ff.opt $remove(%.ff.opt,w)
  110.     goto setloop
  111.   }
  112.   if (i isin %.ff.opt) {
  113.     if (%.ff.group == $null) set %.ff.group $_mididir
  114.     set %.ff.to $gettok(%.ff.group,1,59)
  115.     if ($right(%.ff.to,1) != \) set %.ff.to %.ff.to $+ \
  116.     set %.ff.to %.ff.to $+ *.mid
  117.     set %.ff.group $gettok(%.ff.group,2-,59)
  118.     if (%.ff.group == $null) set %.ff.opt $remove(%.ff.opt,i)
  119.     goto setloop
  120.   }
  121.   if (z isin %.ff.opt) {
  122.     if (%.ff.sext == $null) set %.ff.sext $_mapext(%.ff.stype)
  123.     if ((%.ff.group2 == $null) && (%.ff.group == $null)) set %.ff.group2 $_ppcfg(Sound, [ [ %.ff.sext ] $+ ] Dir)
  124.     if (%.ff.group == $null) {
  125.       set %.ff.to $gettok(%.ff.group2,1,59)
  126.       if ($right(%.ff.to,1) != \) set %.ff.to %.ff.to $+ \
  127.       set %.ff.to %.ff.to $+ *.
  128.       set %.ff.group $_maprev(%.ff.sext,%.ff.to)
  129.       set %.ff.group2 $gettok(%.ff.group2,2-,59)
  130.     }
  131.     set %.ff.to $gettok(%.ff.group,1,59)
  132.     set %.ff.group $gettok(%.ff.group,2-,59)
  133.     if ((%.ff.group2 == $null) && (%.ff.group == $null)) set %.ff.opt $remove(%.ff.opt,z)
  134.     goto setloop
  135.   }
  136.   if (r isin %.ff.opt) set %.ff.did %.ff.did Recent files
  137.   set %.ff.type Files
  138.   :loopback
  139.   if (r isin %.ff.opt) {
  140.     set %.ff.files $_ppcfg(%.ff.type,Num)
  141.     set %.ff.first %.ff.files
  142.     :loopr1
  143.     set %.ff.file $_ppcfg(%.ff.type,%.ff.files)
  144.     if ($exists(%.ff.file)) { inc %.ff.found | aline @Express %.ff.file }
  145.     if ($_vd(.ff.files) > 0) goto loopr1
  146.     if (%.ff.first < 20) {
  147.       set %.ff.files 20
  148.       :loopr2
  149.       set %.ff.file $_ppcfg(%.ff.type,%.ff.files)
  150.       if (%.ff.file == $null) goto doner
  151.       if ($exists(%.ff.file)) { inc %.ff.found | aline @Express %.ff.file }
  152.       if ($_vd(.ff.files) > %.ff.first) goto loopr2
  153.     }
  154.     :doner
  155.   }
  156.   if (s isin %.ff.opt) { set %.ff.did %.ff.did DCC sends | set %.ff.opt $remove(%.ff.opt,s) $+ r | set %.ff.type Sends | goto loopback }
  157.   if (g isin %.ff.opt) { set %.ff.did %.ff.did DCC gets | set %.ff.opt $remove(%.ff.opt,g) $+ r | set %.ff.type Gets | goto loopback }
  158.   if (x isin %.ff.opt) {
  159.     set %.ff.dat $_ppdir $+ dccinc.dat
  160.     set %.ff.files $lines(%.ff.dat)
  161.     if (%.ff.files > 0) {
  162.       :loopx
  163.       set %.ff.file $read -nl [ $+ [ %.ff.files ] ] %.ff.dat
  164.       if (:g: isin $gettok(%.ff.file,1,32)) {
  165.         inc %.ff.found
  166.         aline @Express $gettok(%.ff.file,3-,32)
  167.         set %_ffreqc. [ $+ [ $line(@Express,0) ] ] $gettok($gettok(%.ff.file,1,32),3-,58)
  168.       }
  169.       if ($_vd(.ff.files) > 0) goto loopx
  170.       set %_findrcpop Request completion
  171.     }
  172.     set %.ff.did %.ff.did Incomplete DCC Gets
  173.   }
  174.   titlebar @Express File Finder ( $+ %.ff.found files found)
  175.   sline @Express 1
  176.   iline @Express 1 - Search performed :  $+ %.ff.did $+  -
  177.   iline @Express 2 - Select file(s) and right-click for options -
  178.   iline @Express 3 - Double-click will :  $+ %eff.click file $+  -
  179.   iline @Express 4 $chr(160)
  180.   if (n isin %.ff.opt) window -b @Express
  181.   else window -arb @Express
  182. }
  183. ff find $1-
  184. findzip {
  185.   window -c @WinZip
  186.   window -nl @WinZip /_finishzip %font.basic
  187.   _progress.1 Searching for WinZip... Please wait...
  188.   _progress.2 0 0% complete... (drive C:)
  189.   set %.fz.dr 99 | unset %.fz.found
  190.   :loop
  191.   set %.fz.wh $chr(%.fz.dr) $+ :\
  192.   inc %.fz.found $findfile(%.fz.wh,winzip*.exe,@WinZip)
  193.   if ($_vi(.fz.dr) <= 122) {
  194.     set %.fz.perc $int($calc((%.fz.dr - 99) * 100 / 24))
  195.     _progress.2 %.fz.perc %.fz.perc $+ % complete... (drive $upper($chr(%.fz.dr)) $+ :)
  196.     goto loop
  197.   }
  198.   window -c @Progress
  199.   iline @WinZip 1 - Please double-click on the filename that corresponds to your copy of WinZip. -
  200.   iline @WinZip 2 - If you do not have WinZip or do not wish to use it, double-click here -
  201.   iline @WinZip 3 $chr(160)
  202.   set %.wz.hi $int($calc($_rtok(1,32,%font.basic) * 1.6 * (3 + %.fz.found)))
  203.   window -ar @WinZip $_center($calc( [ $window(-3).w ] - 100),%.wz.hi) $calc( [ $window(-3).w ] - 100) %.wz.hi
  204. }
  205. _finishzip {
  206.   set %.line $sline(@WinZip,1).ln
  207.   if ((%.line == 1) || (%.line == 3)) halt
  208.   if (%.line == 2) { _writecfg Misc WinZip | disps No WinZip selected. }
  209.   else { _writecfg Misc WinZip $sline(@WinZip,1) | disps WinZip selected- %col.info2 $+ $sline(@WinZip,1) }
  210.   window -c @WinZip
  211. }
  212. ; -----------------------------------------------------
  213. ; Color aliases
  214. ; -----------------------------------------------------
  215. colorwin {
  216.   window -c @Colors
  217.   window -c @Colorsá
  218.   window -lar $+ $_spec1d @Colors $_center(718,351) 718 351 @Colors1 Arial 716
  219.   loadbuf @Colors $_ppdir $+ colors.txt
  220.   sline @Colors 1
  221.   sline -r @Colors 1
  222. }
  223. ; note that the window is @Colors + $chr(160)
  224. _cwinsel {
  225.   set %.bk $sline(@Colors,1).ln
  226.   if (%.bk < 1) halt
  227.   set %.bk $_lpad(2,0,$_j(%.bk))
  228.   window -c @Colorsá
  229.   window -ln $+ $_spec1d @Colorsá $_center(150,352) 150 352 @Colors2 Arial 716
  230.   set %.fg 0
  231.   :loop
  232.   aline @Colorsá  $+ %.fg $+ , $+ %.bk  --->   $_lpad(2,0,%.fg) on %.bk   <---       
  233.   if ($_vi(.fg) < 16) goto loop
  234.   window -lar @Colorsá
  235.   window -c @Colors
  236. }
  237. _cwinsel2 {
  238.   set %.line $sline(@Colorsá,1)
  239.   window -c @Colorsá
  240.   set %.col $gettok(%.line,1,32)
  241.   editbox -a $editbox($active) $+ %.col
  242. }
  243. showcolor dispa 1,0 0 0,1 1 0,2 2 0,3 3 0,4 4 0,5 5 0,6 6 0,7 7 1,8 8 1,9 9 0,10 10 1,11 11 0,12 12 0,13 13 0,14 14 1,15 15 
  244. saycolor say 1,0 0 0,1 1 0,2 2 0,3 3 0,4 4 0,5 5 0,6 6 0,7 7 1,8 8 1,9 9 0,10 10 1,11 11 0,12 12 0,13 13 0,14 14 1,15 15 
  245. cncoff {
  246.   if (%+cnc.on) { disp Click 'N' Color style disabled. | set %+cnc.on $false }
  247.   set %cnc.fg 1 | set %cnc.bk 1 | set %cnc.attr 1 | set %cnc.patt 1 | set %cnc.text 1 | set %cnc.backw 1
  248.   if ($_isopen(@FG)) { sline @FG 1 | sline @BK 1 | sline @Attr 1 | sline @Pattern 1 | sline @Text 1 | sline @Backwards 1 }
  249. }
  250. cnc {
  251.   if ($1 == +) set %+cnc.on $true
  252.   else set %+cnc.on $false
  253.   if ($_isopen(@FG)) goto perform
  254.   window -c @Click | window -r @Click 5 $calc( [ $window(-3).h ] - 435) 661 113 @CNC %font.quick
  255.   titlebar @Click 'N' Color
  256.   aline %col.cust @Click Select one option per column to design your text style. %col.custdark $+ Patterns override colors.
  257.   aline %col.cust @Click Then press %col.custdark $+ F6 again to %col.custdark $+ style the text in the editbox of the current window.
  258.   aline %col.cust @Click Press %col.custdark $+ ShiftF6 instead to use this style for %col.custdark $+ ALL future text until disabled.
  259.   aline %col.cust @Click Press %col.custdark $+ CtrlF6 to %col.custdark $+ reset these settings to normal and %col.custdark $+ disable any %col.custdark $+ ShiftF6.
  260.   set %.qc.text Black.Dark Blue.Dark Green.Bright Red.Dark Red.Dark Purple.Orange.Yellow.Bright Green.Dark Cyan.Bright Cyan.Light Blue.Light Purple.Dark Grey.Light Grey.White
  261.   set %.qc.opp 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1
  262.   set %.qc.num 1
  263.   set %.qc.fg $colour(norm)
  264.   if (%.qc.fg == 0) set %.qc.fg 16
  265.   set %.qc.bk $colour(back)
  266.   if (%.qc.bk == 0) set %.qc.bk 16
  267.   window -c @FG | window -lr @FG 5 $calc( [ $window(-3).h ] - 322) 140 296 @CNC Arial 11
  268.   window -c @BK | window -lr @BK 145 $calc( [ $window(-3).h ] - 322) 140 296 @CNC Arial 11
  269.   aline @FG  $+ $gettok(%.qc.opp,%.qc.fg,32) $+ , $+ %.qc.fg $+ $str($chr(160),11) $+ (normal fg) $+ $str($chr(160),25)
  270.   aline @BK  $+ $gettok(%.qc.opp,%.qc.bk,32) $+ , $+ %.qc.bk $+ $str($chr(160),11) $+ (normal bk) $+ $str($chr(160),25)
  271.   :loop
  272.   aline %.qc.num @FG  $+ $gettok(%.qc.opp,%.qc.num,32) $+ , $+ %.qc.num $+ $str($chr(160),11) $+  $+ $gettok(%.qc.text,%.qc.num,46)) $+ $str($chr(160),25)
  273.   aline %.qc.num @BK  $+ $gettok(%.qc.opp,%.qc.num,32) $+ , $+ %.qc.num $+ $str($chr(160),11) $+  $+ $gettok(%.qc.text,%.qc.num,46)) $+ $str($chr(160),25)
  274.   if ($_vi(.qc.num) <= 16) goto loop
  275.   aline @FG - One 4random color - | aline @FG - Many 03r06a02n06d10o13m colors -
  276.   aline @BK - One 4random color - | aline @BK - Many 10r12a04n02d12o03m colors -
  277.   window -c @Text | window -lr @Text 285 $calc( [ $window(-3).h ] - 160) 150 134 @CNC Arial 11
  278.   aline @Text (normal letters)
  279.   aline @Text UppErcAsE vOwEls
  280.   aline @Text LoWeRCaSe VoWeLS
  281.   aline @Text úAmΘ └Üó∩I, ±╚vΘ« ∙è╦!
  282.   aline @Text RanDOM cAPitaLs
  283.   aline @Text aLtErNaTiNg cApItAlS
  284.   aline @Text First Letter Caps
  285.   window -c @Backwards | window -lr @Backwards 435 $calc( [ $window(-3).h ] - 132) 231 106 @CNC Arial 15
  286.   aline @Backwards (forward text)
  287.   aline @Backwards txet sdrawkcaB
  288.   aline @Backwards order word Reverse
  289.   aline @Backwards sdrawkcaB sdrow
  290.   window -c @Pattern | window -lr @Pattern 435 $calc( [ $window(-3).h ] - 322) 231 190 @CNC Arial 11
  291.   aline @Pattern (no pattern, use selected colors)
  292.   aline @Pattern 9,1C1,9h9,1e1,9c9,1k1,9e9,1r1,9e9,1d (uses selected colors)
  293.   aline @Pattern 5,0H6u2e10v3o7l5u6t2i10o3n (can change bk color)
  294.   aline @Pattern 0,1M15,14u14,15r1,0k14,15 15,14d0,1w15,14e14,15l1,0l14,15e15,14r
  295.   aline @Pattern 8,1I7,1n4,1f5,1l4,1a7,1m8,1m7,1a4,1t5,1i4,1o7,1n (can change bk color)
  296.   aline @Pattern 8,5R8,6a8,2i8,10n8,3b8,7o8,5w8,6 8,2r8,10o8,3a8,7d (can change fg color)
  297.   aline @Pattern 2,0N10a3t9u15r9a3l10i2t10y (can change bk color)
  298.   aline @Pattern 8,0/1P7/1s4/1y5/1c4/1h7/1o8/1c7/1y4/1c5/1l4/1e (uses selected colors)
  299.   aline @Pattern 0,2-M0,12-a0,10-r0,11-q0,10-u0,12-e0,2-e0,12- 0,10-20,11-00,10-00,12-1 (can change colors)
  300.   aline @Pattern 0,0|1A15|1l14|1l| 14|1v15|1e0|1n15|1t14|1 |u14|1p (can change colors)
  301.   aline @Pattern 1,0Ru1nn14in1g 14ou14t 15of14 i15n15k (can change bk color)
  302.   window -c @Attr | window -alr @Attr 285 $calc( [ $window(-3).h ] - 322) 150 162 @CNC Arial 11
  303.   aline @Attr (no attributes)
  304.   aline @Attr Bold
  305.   aline @Attr Underline
  306.   aline @Attr Both
  307.   aline @Attr Random bold
  308.   aline @Attr Random underline
  309.   aline @Attr Random both
  310.   aline @Attr Psychoid android
  311.   aline @Attr Binary twitch
  312.   sline @FG %cnc.fg | sline @BK %cnc.bk | sline @Pattern %cnc.patt | sline @Attr %cnc.attr | sline @Text %cnc.text | sline @Backwards %cnc.backw
  313.   window -a @FG
  314.   return
  315.   :perform
  316.   set %cnc.fg $sline(@FG,1).ln | if (%cnc.fg < 1) set %cnc.fg 1 | if ($2 != @FG) window -c @FG
  317.   set %cnc.bk $sline(@BK,1).ln | if (%cnc.bk < 1) set %cnc.bk 1 | if ($2 != @BK) window -c @BK
  318.   set %cnc.attr $sline(@Attr,1).ln | if (%cnc.attr < 1) set %cnc.attr 1 | if ($2 != @Attr) window -c @Attr
  319.   set %cnc.patt $sline(@Pattern,1).ln | if (%cnc.patt < 1) set %cnc.patt 1 | if ($2 != @Pattern) window -c @Pattern
  320.   set %cnc.text $sline(@Text,1).ln | if (%cnc.text < 1) set %cnc.text 1 | if ($2 != @Text) window -c @Text
  321.   set %cnc.backw $sline(@Backwards,1).ln | if (%cnc.backw < 1) set %cnc.backw 1 | if ($2 != @Backwards) window -c @Backwards
  322.   if ($2 != @Click) window -c @Click
  323.   if ($1 == -) return
  324.   if ((%cnc.fg == 1) && (%cnc.bk == 1) && (%cnc.attr == 1) && (%cnc.patt == 1) && (%cnc.text == 1) && (%cnc.backw == 1)) { set %+cnc.on $false | return }
  325.   if ($1 == +) { disp Click 'N' Color style enabled- $_cncapply(This is an example) | return }
  326.   set %.cnc.edit $editbox($active)
  327.   if (%.cnc.edit == $null) { _askr _cncedit Text to apply style to? }
  328.   _cncedit %.cnc.edit
  329. }
  330. color set %.did $_colapplycmd(colori,$1-) | if ($left(%.did,1) != /) say %.did | else %.did
  331. color2 set %.did $_colapplycmd(color2i,$1-) | if ($left(%.did,1) != /) say %.did | else %.did
  332. funky set %.did $_colapplycmd(funkyi,$1-) | if ($left(%.did,1) != /) say %.did | else %.did
  333. checker set %.did $_colapplycmd(checker2i,$1-) | if ($left(%.did,1) != /) say %.did | else %.did
  334. codes set %.did $_colapplycmd(codei,$1-) | if ($left(%.did,1) != /) say %.did | else %.did
  335. _cncapplycmd return $_colapplycmd(_cncapply,$1-)
  336. _colapplycmd {
  337.   if ($left($2,1) == /) {
  338.     if ($findtok(disp.say.me.ame.amsg.aame.aamsg.acme.acmsg.away.back.a.b.quit,$remove($remove($2,.),/),46) != $null) return $2 $ [ $+ [ $1 $+ [ ( $+ $3- $+ ) ] ] ]
  339.     elseif ($findtok(msg.describe.n.notice.q.query.allbut.ctcp.ctcpreply,$remove($remove($2,.),/),46) != $null) return $2-3 $ [ $+ [ $1 $+ [ ( $+ $4- $+ ) ] ] ]
  340.     elseif ($findtok(o.wall.massn.onotice.ovnotice.wallvoc.vonotice.ov.vo.t.topic.part.p,$remove($remove($2,.),/),46) != $null) {
  341.       if ($_ischan($3)) return $2-3 $ [ $+ [ $1 $+ [ ( $+ $4- $+ ) ] ] ]
  342.       else return $2 $ [ $+ [ $1 $+ [ ( $+ $3- $+ ) ] ] ]
  343.     }
  344.     else return $2-
  345.   }
  346.   else return $ [ $+ [ $1 $+ [ ( $+ $2- $+ ) ] ] ]
  347. }
  348. _cncedit editbox -a $_cncapplycmd($1-)
  349. _cncapply {
  350.   if ($1 == $null) return
  351.   set %.cnc.do $1-
  352.   if (%cnc.backw == 2) set %.cnc.do $backwardsi(%.cnc.do)
  353.   elseif (%cnc.backw == 3) set %.cnc.do $backwordsi(%.cnc.do)
  354.   elseif (%cnc.backw == 4) set %.cnc.do $backwardsi($backwordsi(%.cnc.do))
  355.   if (%cnc.text == 2) set %.cnc.do $uvoweli(%.cnc.do)
  356.   elseif (%cnc.text == 3) set %.cnc.do $lvoweli(%.cnc.do)
  357.   elseif (%cnc.text == 4) set %.cnc.do $asciii(%.cnc.do)
  358.   elseif (%cnc.text == 5) set %.cnc.do $randcapi(%.cnc.do)
  359.   elseif (%cnc.text == 6) set %.cnc.do $altcapi(%.cnc.do)
  360.   elseif (%cnc.text == 7) set %.cnc.do $initcapi(%.cnc.do)
  361.   set %.cnc.bk $_j(%cnc.bk)
  362.   if (%.cnc.bk < 1) {
  363.     if ((%cnc.patt < 3) || (%cnc.patt == 8)) set %.cnc.bk $colour(back)
  364.     else set %.cnc.bk $gettok(0-0-0-0-1-0-0-0-1-0-0,%cnc.patt,45)
  365.   }
  366.   if (%.cnc.bk < 1) set %.cnc.bk 16
  367.   set %.cnc.fg $_j(%cnc.fg)
  368.   if (%.cnc.fg < 1) {
  369.     if ((%cnc.patt < 3) || (%cnc.patt == 8)) set %.cnc.fg $colour(norm)
  370.     else set %.cnc.fg $gettok(0-0-0-0-0-8-0-1-0-1-0,%cnc.patt,45)
  371.   }
  372.   if (%.cnc.fg < 1) set %.cnc.fg 16
  373.   set %.cnc.match 16-4-7-8-9-10-11-13-14-15,16-3-4-7-8-9-10-11-13-15,16-1-2-5-6-8-9-11-12-15,16-1-2-5-6-8-9-11-12-15,16-3-4-7-8-9-10-11-13-15,16-1-2-4-7-8-9-11-13-15,16-1-2-5-6-8-9-11-12-15,1-2-3-4-5-6-10-12-13-14,1-2-3-4-5-6-10-12-13-14,16-1-2-5-6-8-9-11-12-15,1-2-3-4-5-6-10-12-13-14,16-1-2-5-7-8-9-11-13-15,16-1-2-5-6-8-9-11-12-15,16-1-2-5-6-8-9-11-12-15,1-2-3-4-5-6-10-12-13-14,1-2-3-4-5-6-10-12-13-14
  374.   if (%.cnc.bk == 17) {
  375.     if (%.cnc.fg > 16) set %.cnc.bk $r(1,16)
  376.     else set %.cnc.bk $gettok($gettok(%.cnc.match,%.cnc.fg,44),$r(1,10),45)
  377.   }
  378.   if (%.cnc.bk == 18) set %.cnc.bk 17
  379.   if (%.cnc.fg == 17) {
  380.     if (%.cnc.bk > 16) set %.cnc.fg $r(1,16)
  381.     else set %.cnc.fg $gettok($gettok(%.cnc.match,%.cnc.bk,44),$r(1,10),45)
  382.   }
  383.   if (%.cnc.fg == 18) set %.cnc.fg 17
  384.   unset %.cnc.l*
  385.   if (((%cnc.patt == 1) && (%.cnc.bk != 17)) || (%cnc.patt == 11)) {
  386.     if (%cnc.attr == 5) set %.cnc.do $boldi(%.cnc.do)
  387.     elseif (%cnc.attr == 6) set %.cnc.do $ulinei(%.cnc.do)
  388.     elseif (%cnc.attr == 7) set %.cnc.do $codei(%.cnc.do)
  389.     elseif (%cnc.attr == 8) set %.cnc.do $pati(6,%.cnc.do)
  390.     elseif (%cnc.attr == 9) set %.cnc.do $pati(8,%.cnc.do)
  391.     if (%cnc.patt == 11) {
  392.       if (%.cnc.bk > 16) set %.cnc.bk 16
  393.       set %.cnc.do 1, $+ %.cnc.bk $+ $fadei(1.1.14.1.14.14.15.14.15.15,%.cnc.do)
  394.     }
  395.     elseif ((%cnc.fg != 1) || (%cnc.bk != 1)) {
  396.       if (%.cnc.fg == 17) set %.cnc.do 0, $+ %.cnc.bk $+ $colori(%.cnc.do)
  397.       else set %.cnc.do  $+ %.cnc.fg $+ , $+ $calc(16 + %.cnc.bk) $+ %.cnc.do
  398.     }
  399.   }
  400.   elseif ((%cnc.patt == 2) && (%cnc.attr < 5)) {
  401.     if ((%.cnc.fg == 17) && (%.cnc.bk == 17)) set %.cnc.do $checkeri(%.cnc.do)
  402.     else {
  403.       if (%.cnc.fg == 17) { set %.cnc.fg %.cnc.bk | set %.cnc.bk 17 }
  404.       if (%.cnc.bk == 17) set %.cnc.chk  $+ %.cnc.fg $+ , $+ $_lpad(2,0,$gettok($gettok(%.cnc.match,%.cnc.fg,44),$r(1,10),45)) $+ . $+ $gettok($gettok(%.cnc.match,%.cnc.fg,44),$r(1,10),45) $+ , $+ $_lpad(2,0,%.cnc.fg)
  405.       else set %.cnc.chk  $+ %.cnc.fg $+ , $+ $_lpad(2,0,%.cnc.bk) $+ . $+ %.cnc.bk $+ , $+ $_lpad(2,0,%.cnc.fg)
  406.       _pattern %.cnc.chk %.cnc.do
  407.       set %.cnc.do $result
  408.     }
  409.   }
  410.   else {
  411.     if (%cnc.attr == 5) set %.cnc.la r.b.$
  412.     elseif (%cnc.attr == 6) set %.cnc.la r.u.$
  413.     elseif (%cnc.attr == 7) set %.cnc.la r.b.u.ub.$
  414.     elseif (%cnc.attr == 8) set %.cnc.la c.u.b.b.u
  415.     elseif (%cnc.attr == 9) { set %.cnc.la2 c.u.us.u.u | set %.cnc.lp o.0 | set %.cnc.lp2 o.+0 }
  416.     if (%cnc.patt == 1) { set %.cnc.lp o.0 | set %.cnc.lp2 o.+0 }
  417.     elseif (%cnc.patt == 2) { if (%cnc.attr == 9) set %.cnc.la c.us.us.us.u | else set %.cnc.lp o.s }
  418.     elseif (%cnc.patt == 3) set %.cnc.lp c.5.6.2.10.3.7
  419.     elseif (%cnc.patt == 4) { set %.cnc.lp p.16.15.14.1 | set %.cnc.lp2 p.+1.+14.+15.+16 }
  420.     elseif (%cnc.patt == 5) set %.cnc.lp p.8.7.4.5
  421.     elseif (%cnc.patt == 6) { if (%cnc.attr == 9) set %.cnc.lp2 o.0 | set %.cnc.lp c.+5.+6.+2.+10.+3.+7 }
  422.     elseif (%cnc.patt == 7) set %.cnc.lp p.2.10.3.9.15
  423.     elseif (%cnc.patt == 8) { set %.cnc.lp o.0 | set %.cnc.lia p.8.7.4.5 | set %.cnc.lic o./ }
  424.     elseif (%cnc.patt == 9) { if (%cnc.attr == 9) set %.cnc.lp2 o.0 | set %.cnc.lp o.+0 | set %.cnc.lia p.+2.+12.+10.+11 | set %.cnc.lic o.- }
  425.     elseif (%cnc.patt == 10) { set %.cnc.lp o.0b | set %.cnc.lia p.16b.15b.14b.1b | set %.cnc.lic 0.| }
  426.     if (%.cnc.lia == $null) set %.cnc.ni 0 | else set %.cnc.ni 1 1
  427.     set %.cnc.na 0 | if (%.cnc.la != $null) inc %.cnc.na | if (%.cnc.la2 != $null) inc %.cnc.na
  428.     if (%.cnc.lp != $null) inc %.cnc.na | if (%.cnc.lp2 != $null) inc %.cnc.na
  429.     set %.cnc.do %.cnc.fg %.cnc.bk $ %.cnc.ni %.cnc.lia %.cnc.lic %.cnc.na %.cnc.lpa %.cnc.la %.cnc.lp %.cnc.lp2 %.cnc.la2 $_s2p(%.cnc.do)
  430.     set %.cnc.do $_spg(%.cnc.do)
  431.   }
  432.   if ((%cnc.patt == 2) || (%cnc.patt == 5) || (%cnc.patt == 10)) set %.cnc.do  $+ %.cnc.do
  433.   if (%cnc.attr == 2) set %.cnc.do  $+ %.cnc.do
  434.   elseif (%cnc.attr == 3) set %.cnc.do  $+ %.cnc.do
  435.   elseif (%cnc.attr == 4) set %.cnc.do  $+ %.cnc.do
  436.   return %.cnc.do
  437. }
  438. ; Super pattern generator
  439. ; FG BK IA NI [NA AL ... CL] ... NA [AL ...] TX
  440. ; FG = foreground (1-16, >16=pick randomly each use)
  441. ; BK = background (same)
  442. ; IA = initial attributes (b/u/r)
  443. ; NI = number of interweaves
  444. ; Each interweave-
  445. ;   NA = number of attribute layers
  446. ;   Each layer-
  447. ;     AL = Attribute layer in 1.2.3.4.etc format (one code per token)
  448. ;   CL = Character layer in 1.2.3.4.etc format
  449. ; NA = number of attribute layers
  450. ; Each layer-
  451. ;   AL = Attribute layer in 1.2.3.4.etc format (one code per token)
  452. ; TX = Text to pattern, with  for spaces
  453. ; Attribute layer codes-         +## = set background to, ## = set foreground to, b = toggle bold, u = toggle underline, [+]##[bu] do both
  454. ; (## =1 or 2 digit, 0 = default)  s = swap fg/bk, $ = null
  455. ; first token of attr layer - c = cycle through in order, p = ping pong start to end to start, r = pick randomly, s = stutter (advance 1 or 2 randomly) z = stutter ping pong o = cycle once then stay on last
  456. ; Character layer- first token ala attr layer, rest is just char(s) to interweave, use $ for null,  for space
  457. ; Theoretically, each interweave layer is created using it's chars and attributes, then the main is created with one bit of each interweave
  458. ; layer (in order) before each character. NO ERROR CHECKING PERFORMED.
  459. ; example for simple random-color checkerboard-
  460. ; _spg 17 17 b 0 1 o.s Sampletext
  461. ; example for text that cycles ltgrey to black and back, randomly reversing, weaved with lines that cycle thru red colors, all w/a random cyan/white bk with underline 2 on 2 off
  462. ; _spg 1 0 $ 1 3 c.$.u.$.u r.+16.+11 p.05.04.07.08 o.| 2 p.015.014.01 r.$.s Sampletext
  463. _spg {
  464.   unset %..*
  465.   set %..c.fg $1 | set %..c.bk $2
  466.   if (u isin $3) set %..ret  | if (b isin $3) set %..ret %..ret 
  467.   set %..s.fg -1 | set %..s.bk -1
  468.   set %..match 16-4-7-8-9-10-11-13-14-15,16-3-4-7-8-9-10-11-13-15,16-1-2-5-6-8-9-11-12-15,16-1-2-5-6-8-9-11-12-15,16-3-4-7-8-9-10-11-13-15,16-1-2-4-7-8-9-11-13-15,16-1-2-5-6-8-9-11-12-15,1-2-3-4-5-6-10-12-13-14,1-2-3-4-5-6-10-12-13-14,16-1-2-5-6-8-9-11-12-15,1-2-3-4-5-6-10-12-13-14,16-1-2-5-7-8-9-11-13-15,16-1-2-5-6-8-9-11-12-15,16-1-2-5-6-8-9-11-12-15,1-2-3-4-5-6-10-12-13-14,1-2-3-4-5-6-10-12-13-14
  469.   set %..pos 0
  470.   :rest
  471.   set %..outer $_i($4)
  472.   set %..parm 5
  473.   :outer
  474.   set %..inner $gettok($1-,%..parm,32)
  475.   inc %..parm
  476.   if (%..inner > 0) {
  477.     :inner
  478.     set %..layer $gettok($1-,%..parm,32)
  479.     _spg_bs %..parm
  480.     set %..tok $gettok(%..layer,%..tok,46)
  481.     if (u isin %..tok) set %..ret %..ret $+ 
  482.     if (b isin %..tok) set %..ret %..ret $+ 
  483.     if (s isin %..tok) { set %..c.tmp %..c.fg | set %..c.fg %..c.bk | set %..c.bk %..c.tmp }
  484.     set %..tok $remove($remove($remove(%..tok,u),b),s)
  485.     if (+ isin %..tok) {
  486.       set %..c.bk %..tok
  487.       if (%..c.bk == 0) set %..c.bk $2
  488.     }
  489.     elseif (%..tok isnum) { set %..c.fg %..tok | if (%..c.fg == 0) set %..c.fg $1 }
  490.     if ($_vd(..inner) > 0) goto inner
  491.   }
  492.   set %..layer $gettok($1-,%..parm,32)
  493.   if (%..outer == 1) { inc %..pos | set %..bit $mid(%..layer,%..pos,1) | if (%..bit == $null) return $_p2s(%..ret) | goto dobit }
  494.   else { _spg_bs %..parm | set %..bit $gettok(%..layer,%..tok,46) }
  495.   if (%..bit != $) {
  496.     :dobit
  497.     if (%..c.bk == 17) { if (%..c.fg > 16) set %..c.bk $r(1,16) | else set %..c.bk $gettok($gettok(%..match,%..c.fg,44),$r(1,10),45) }
  498.     if (%..c.fg == 17) set %..c.fg $gettok($gettok(%..match,%..c.bk,44),$r(1,10),45)
  499.     if (%..s.bk != %..c.bk) { set %..ret %..ret $+  $+ $calc(%..c.fg) $+ , $+ $calc(16 + %..c.bk) | set %..s.bk %..c.bk | set %..s.fg %..c.fg }
  500.     elseif (%..s.fg != %..c.fg) { set %..ret %..ret $+  $+ $calc(16 + %..c.fg) | set %..s.fg %..c.fg }
  501.     set %..ret %..ret $+ %..bit
  502.   }
  503.   if ($_vd(..outer) > 0) goto outer | goto rest
  504. }
  505. _spg_bs {
  506.   inc %..parm
  507.   set %..bit $left(%..layer,1)
  508.   if (%..bit == r) set %..tok $r(2,$_i($count(%..layer,.)))
  509.   else {
  510.     set %..num $count(%..layer,.)
  511.     set %..tok %.. [ $+ [ $1 ] ]
  512.     if (%..bit isin sz) inc %..tok $r(1,2)
  513.     else inc %..tok
  514.     if (%..tok > %..num) {
  515.       if (%..bit == o) set %..tok %..num
  516.       elseif (%..bit isin pz) dec %..tok $calc(%..num * 2 - 2)
  517.       else dec %..tok %..num
  518.     }
  519.     set %.. [ $+ [ $1 ] ] %..tok
  520.     if (%..tok <= 0) set %..tok $calc(3 - %..tok)
  521.     else inc %..tok
  522.   }
  523. }
  524. ; -----------------------------------------------------
  525. ; Display hostmask
  526. ; -----------------------------------------------------
  527. host {
  528.   if ($1 == $null) _quickhelp /host
  529.   if (. isin $1) set %.nk $1 | else set %.nk $_nickglob($1)
  530.   if (($address(%.nk,5) == $null) && ($_not($_ismask(%.nk)))) _lookup %.nk ! host , %.nk
  531.   if ($2 != $null) dispa Hostmask for $2 is- %col.info1 $+ $_ppmask(%.nk,3)
  532.   else dispa Hostmask for %.nk is- %col.info1 $+ $_ppmask(%.nk,3)
  533. }
  534. ; -----------------------------------------------------
  535. ; Channel scan
  536. ; -----------------------------------------------------
  537. ; flags- rawihslmd
  538. scan {
  539.   if (($_ismask($1)) || ($_ismask($2))) { clones $1- | return }
  540.   _psplit cs $1-
  541.   if (%.cs.param == $null) set %.cs.param %chanscan.default
  542.   set %-cscando $addtok(%-cscando,%.cs.chan,32)
  543.   .enable #-chanscan
  544.   set %-cscantype. [ $+ [ %.cs.chan ] ] %.cs.param
  545.   .raw who %.cs.chan
  546. }
  547.